<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // async function fn() {
        //     console.log("fn函数执行了");
        //     await 123 //注意细节 这里并不是打印123 所以最后输出结果中并不会出现123
        //     // await只会等promise实例
        //     await setTimeout(() => { 
        //         console.log(222);
        //     }, 1000)

        // }
        // fn()
        // // 执行结果： fn函数执行了  222



        async function fn() {
            console.log("333");
            const re2 = await new Promise((resolve, reject) => {
                setTimeout(function () {
                    console.log(222);
                    reject("heng")
                }, 2000)
            })
            console.log(111);
            console.log(re2);
            return "hello"; //返回成功结果值
        }
        const re = fn();  
        re.catch((error) => {   //fn()的返回值是个失败的promise实例
            console.log(error)  //heng
        }) //解决await的reject状态报错
        re.then((data) => {
            console.log(data)
        }) //data是成功结果 函数返回值
        console.log(re); //输出结果：333 失败的promise函数 222
        //  console.log(re)时 首先进入async函数 先打印333 其次async函数调用后会有个返回值（失败的promise实例）又因为await里面进行的是异步操作 而async是同步进行的 在await执行之前 async已经执行完毕了 所以先输入async的返回值 再输出222
    </script>
</body>

</html>